<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en" xml:lang="en" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Guideline: Abstract Away Complexity</title>
<meta name="uma.type" content="Guideline">
<meta name="uma.name" content="abstract_away_complexity">
<meta name="uma.presentationName" content="Abstract Away Complexity">
<meta name="element_type" content="other">
<meta name="filetype" content="description">
<meta name="role" content="">
<link rel="StyleSheet" href="./../../../css/default.css" type="text/css">
<script src="./../../../scripts/ContentPageResource.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSubSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageToolbar.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/contentPage.js" type="text/javascript" language="JavaScript"></script><script type="text/javascript" language="JavaScript">
					var backPath = './../../../';
					var imgPath = './../../../images/';
					var nodeInfo=null;
					contentPage.preload(imgPath, backPath, nodeInfo,  '', false, false, false);
				</script>
</head>
<body>
<div id="breadcrumbs"></div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top"><a name="Top"></a>
<div id="page-guid" value="_we3F4ACpEdu8m4dIntu6jA"></div>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td class="pageTitle" nowrap="true">Guideline: Abstract Away Complexity</td><td width="100%">
<div align="right" id="contentPageToolbar"></div>
</td><td width="100%" class="expandCollapseLink" align="right"><a name="mainIndex" href="./../../../index.htm"></a><script language="JavaScript" type="text/javascript" src="./../../../scripts/treebrowser.js"></script></td>
</tr>
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="pageTitleSeparator"><img src="./../../../images/shim.gif" alt="" title="" height="1"></td>
</tr>
</table>
<div class="overview">
<table width="97%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50"><img src="./../../../images/guidance.gif" alt="" title=""></td><td>
<table class="overviewTable" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top"></td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Relationships</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<th class="sectionTableHeading" scope="row">Related Elements</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../../practice.tech.evolutionary_arch.base/tasks/outline_the_arch_FF123A81.html" guid="_0f-1oMlgEdmt3adZL5Dmdw">Outline the Architecture</a>
</li>
<li>
<a href="./../../../practice.tech.evolutionary_arch.base/tasks/refine_the_arch_7723A69E.html" guid="_0gRJgMlgEdmt3adZL5Dmdw">Refine the Architecture</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Main Description</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td class="sectionTableSingleCell"><p>
    Software&nbsp;development is a pursuit characterized by complexity. This can take many forms, such as accommodating
    complex requirements, technology, or team dynamics. Elevating the level of abstraction helps you manage this complexity
    and make measurable progress, despite the inherent difficulty of the task.
</p>
<p>
    Suggestions for several strategies that help abstract away complexity follow.
</p>
<h3>
    Leverage patterns
</h3>
<p>
    Patterns help you take advantage of proven techniques for solving common problems. You can benefit from the experience
    of seasoned practitioners and avoid "re-inventing the wheel," as the saying goes. The use of patterns is a crucial
    aspect of an architecture-centric approach to development, because it helps reduce the novelty and diversity of a
    solution, thus improves quality.
</p>
<p>
    See <a class="elementLinkWithType" href="./../../../core.tech.common.extend_supp/guidances/concepts/pattern_10BE6D96.html" guid="_0YJvUMlgEdmt3adZL5Dmdw">Concept: Pattern</a>&nbsp;for more information.
</p>
<h3>
    Design the architecture with components and services
</h3>
<p>
    This strategy helps manage software complexity through&nbsp;partitioning&nbsp;a system into a set of loosely coupled
    and highly cohesive components. The benefits of this approach include the ability to organize the team around a set of
    smaller, more manageable objectives, and the ability to substitute parts of the system without disturbing the overall
    cohesion of the system. Exposing services encourages re-use by making the functionality of the system easier to
    comprehend. Focusing on services makes it possible to understand what the system does from a technical perspective
    without necessarily having to understand the details of how the system works.
</p>
<p>
    See <a class="elementLinkWithType" href="./../../../core.tech.common.extend_supp/guidances/concepts/component_CB167D48.html" guid="_0YP18MlgEdmt3adZL5Dmdw">Concept: Component</a>&nbsp;for more information.
</p>
<h3>
    Actively promote reuse
</h3>
<p>
    Incorporating existing software into an overall architecture helps reduce cost and improve quality by reusing proven
    working software, rather than developing from scratch. It also helps reduce the burden of maintenance by eliminating
    duplication in the software. Although often difficult to manage, a project or enterprise can reap significant benefits
    from a well-executed re-use strategy.
</p>
<p>
    See <a class="elementLinkWithType" href="./../../../core.tech.common.extend_supp/guidances/guidelines/software_reuse_B6B04C26.html" guid="_vO2uoO0OEduUpsu85bVhiQ">Guideline: Software Reuse</a>&nbsp;for more information.
</p><p/><h3>
    Model key perspectives
</h3>
<p>
    Modeling helps raise the level of abstraction because you simplify complex ideas and represent them visually, as
    illustrations. Good models can convey information that helps the team visualize, specify, construct, and document
    software.
</p>
<p>
    For more information, see <a class="elementLinkWithType" href="./../../../core.tech.common.extend_supp/guidances/guidelines/using_visual_modeling_DA1CA6E4.html" guid="_0SsecNr8EdyXE6np2_hUMA">Guideline: Using Visual Modeling</a>.
</p></td>
</tr>
</table>
</div>
<div class="sectionHeading">More Information</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<th class="sectionTableHeading" scope="row">Concepts</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../../core.tech.common.extend_supp/guidances/concepts/component_CB167D48.html" guid="_0YP18MlgEdmt3adZL5Dmdw">Component</a>
</li>
<li>
<a href="./../../../core.tech.common.extend_supp/guidances/concepts/pattern_10BE6D96.html" guid="_0YJvUMlgEdmt3adZL5Dmdw">Pattern</a>
</li>
</ul>
</td>
</tr>
<tr valign="top">
<th class="sectionTableHeading" scope="row">Guidelines</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../../core.tech.common.extend_supp/guidances/guidelines/software_reuse_B6B04C26.html" guid="_vO2uoO0OEduUpsu85bVhiQ">Software Reuse</a>
</li>
<li>
<a href="./../../../core.tech.common.extend_supp/guidances/guidelines/using_visual_modeling_DA1CA6E4.html" guid="_0SsecNr8EdyXE6np2_hUMA">Using Visual Modeling</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<table class="copyright" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="copyright"><p> This program and the accompanying materials are made available under the<br />
  <a href="http://www.eclipse.org/org/documents/epl-v10.php" target="_blank">Eclipse 
  Public License V1.0</a>, which accompanies this distribution. </p><p/><p> <a class="elementLink" href="./../../../core.default.release_copyright.base/guidances/supportingmaterials/openup_copyright_C3031062.html" guid="_UaGfECcTEduSX6N2jUafGA">OpenUP Copyright</a></p></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script type="text/javascript" language="JavaScript">
				contentPage.onload();
			</script>
</html>
